/*
 * Classe que modela o objeto Aluno
 *
 */

package br.senac.sp.uniobjetos;


public class Aluno {
    private Integer idAluno, idade, sexo, rg;
    private String nome;
    private boolean alterou;

    public Aluno() {
        this.idAluno = -1;
        this.nome = "";
        this.sexo = -1;
        this.idade = -1;		
        this.rg = -1;
    }

    public Aluno (Integer idAluno, String nome, Integer sexo, Integer idade, Integer rg) {
        this.idAluno = idAluno;
        this.nome = nome;
        this.sexo = sexo;
        this.idade = idade;		
        this.rg = rg;						
    }

    public Integer getIdAluno() {
        return idAluno;
    }
    public void setIdAluno(Integer idAluno) {
        this.idAluno = idAluno;
    }

    public String getNome() {
        return nome;
    }
    public void setNome(String nome) {
        if (alterou == false) alterou = !this.nome.equals(nome);
        this.nome = nome;
    }

    public Integer getSexo() {
        return sexo;
    }
    public void setSexo(Integer sexo) {
        if (alterou == false) alterou = !this.sexo.equals(sexo);
        this.sexo = sexo;
    }

    public Integer getIdade() {
        return idade;
    }
    public void setIdade(Integer idade) {
        if (alterou == false) alterou = !this.idade.equals(idade);
        this.idade = idade;
    }	

    public Integer getRg() {
        return rg;
    }
    public void setRg(Integer rg) {
        if (alterou == false) alterou = !this.rg.equals(rg);
        this.rg = rg;
    }

    //-- Gambiarra para listagem
    public String getEspecie() {		
        try {		
            return sexo.equals(1) ? "Masculino" : sexo.equals(0) ? "Feminino" : null;
        } catch (Exception e) {
            return null;
        }
    }

    //-- Estado do objeto
    public boolean isAlterou() {
        return alterou;
    }

    public boolean equals(Object obj) {
        try {
            Aluno aluno = (Aluno) obj;
            return idAluno.equals(aluno.getIdAluno());
        } catch(Exception e) {
            return false;
        }
    }
    
    public boolean equals(Aluno obj) {
        return this.idAluno.equals(obj.getIdAluno()) &&
                this.idade.equals(obj.getIdade()) &&
                this.nome.equals(obj.getNome()) &&
                this.rg.equals(obj.getRg()) && 
                this.sexo.equals(obj.getSexo()); 
    }
}